{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "https://leetcode.com/problems/min-stack\n",
    "\n",
    "\n",
    "\n",
    "Runtime: 44 ms, faster than 10.83% of Go online submissions for Min Stack.\n",
    "Memory Usage: 7.5 MB, less than 50.42% of Go online submissions for Min Stack.\n",
    "\n",
    "\n",
    "\n",
    "```go\n",
    "package main\n",
    "\n",
    "import \"errors\"\n",
    "\n",
    "func Min(values []int) (min int, e error) {\n",
    "\tif len(values) == 0 {\n",
    "\t\treturn 0, errors.New(\"Cannot detect a minimum value in an empty slice\")\n",
    "\t}\n",
    "\n",
    "\tmin = values[0]\n",
    "\tfor _, v := range values {\n",
    "\t\tif v < min {\n",
    "\t\t\tmin = v\n",
    "\t\t}\n",
    "\t}\n",
    "\n",
    "\treturn min, nil\n",
    "}\n",
    "\n",
    "type MinStack struct {\n",
    "\tstack []int\n",
    "}\n",
    "\n",
    "/** initialize your data structure here. */\n",
    "func Constructor() MinStack {\n",
    "\treturn MinStack{make([]int, 0)}\n",
    "}\n",
    "\n",
    "func (this *MinStack) Push(x int) {\n",
    "\tthis.stack = append(this.stack, x)\n",
    "}\n",
    "\n",
    "func (this *MinStack) Pop() {\n",
    "\tthis.stack = this.stack[:len(this.stack)-1]\n",
    "}\n",
    "\n",
    "func (this *MinStack) Top() int {\n",
    "\treturn this.stack[len(this.stack)-1]\n",
    "}\n",
    "\n",
    "func (this *MinStack) GetMin() int {\n",
    "\tv, _ := Min(this.stack)\n",
    "\treturn v\n",
    "}\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Go",
   "language": "go",
   "name": "gophernotes"
  },
  "language_info": {
   "codemirror_mode": "",
   "file_extension": ".go",
   "mimetype": "",
   "name": "go",
   "nbconvert_exporter": "",
   "pygments_lexer": "",
   "version": "go1.15.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
